#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

//写法一:
//int main(int argc, char* argv[])
//{
//    //因为那个字符指针数组的最后一个指针是nullptr
//    //所以可以利用nullptr来作为for循环的判断条件
//    //那么这样的话参数argc就没有产生作用了,是不是就可以不用传入argc这个参数了
//    //并不是,比如你需要进行传入参数的个数的判断,从而进行不同的操作
//    //比如
//    //if(argc == 3)
//    //{
//    //    
//    //}
//    //else if(argc == 4)
//    //{
//    //  
//    //}
//    //
//    //for (int i = 0; argv[i]; ++i)
//    //{
//    //    std::cout << argv[i] << std::endl;
//    //}
//    
//    //更加规范的写法
//    for (int i = 0; i < argc; ++i)
//    {
//        std::cout << argv[i] << std::endl;
//    }
//
//}

//int main(int argc, char* argv[], char* env[])
//{
//    for (int i = 0; env[i]; ++i)
//    {
//        std::cout << env[i] << std::endl;
//    }
//    return 0;
//}

//有趣的想法
//为什么我们输入指令的时候可以跟上许多的选项
//我们利用argv是不是也可以让main函数跟上许多参数,从而实现不同的功能

//int main(int argc, char* argv[])
//{
//    if (argc > 1)
//    {
//        if (strcmp(argv[1], "-q") == 0)
//        {
//            std::cout << "qingdiaoshen" << std::endl;
//        }
//        else if(strcmp(argv[1], "-l") == 0)
//        {
//            std:: cout << "liukun233" << std::endl;
//        }
//       
//        if(argc > 2)
//        {
//            if (strcmp(argv[2], "-q") == 0)
//            {
//                std::cout << "qingdiaoshen" << std::endl;
//            }
//            else if(strcmp(argv[2], "-l") == 0)
//            {
//                std:: cout << "liukun233" << std::endl;
//            }
//        }
//    }
//    return 0;
//}

//方式二:
//注意:libc中定义的全局变量environ指向环境变量表,environ没有包含在任何的头文件中
//所以在使用是,需要使用extern声明
//int main()
// {
//     extern char** environ;
//     int i =0;
//     for (; environ[i]; ++i)
//     {
//         std::cout << environ[i] << std::endl;
//     }    
//     return 0;
// }

// 方式三：
//通过系统调用获取环境变量
 #include <stdlib.h>
 int main()
 {
     //这里的getenv可以根据输入的环境变量名，查找对应的环境变量具体内容
     std::cout << getenv("PATH") << std::endl; 
     return 0;
 }


